## Test that llvm-readobj/llvm-readelf shows proper relocation type
## names and values for aarch64 target.

# RUN: yaml2obj %s -o %t-aarch64.o
# RUN: llvm-readobj -r --expand-relocs %t-aarch64.o | FileCheck %s

# CHECK: Type: R_AARCH64_NONE (0)
# CHECK: Type: R_AARCH64_ABS64 (257)
# CHECK: Type: R_AARCH64_ABS32 (258)
# CHECK: Type: R_AARCH64_ABS16 (259)
# CHECK: Type: R_AARCH64_PREL64 (260)
# CHECK: Type: R_AARCH64_PREL32 (261)
# CHECK: Type: R_AARCH64_PREL16 (262)
# CHECK: Type: R_AARCH64_MOVW_UABS_G0 (263)
# CHECK: Type: R_AARCH64_MOVW_UABS_G0_NC (264)
# CHECK: Type: R_AARCH64_MOVW_UABS_G1 (265)
# CHECK: Type: R_AARCH64_MOVW_UABS_G1_NC (266)
# CHECK: Type: R_AARCH64_MOVW_UABS_G2 (267)
# CHECK: Type: R_AARCH64_MOVW_UABS_G2_NC (268)
# CHECK: Type: R_AARCH64_MOVW_UABS_G3 (269)
# CHECK: Type: R_AARCH64_MOVW_SABS_G0 (270)
# CHECK: Type: R_AARCH64_MOVW_SABS_G1 (271)
# CHECK: Type: R_AARCH64_MOVW_SABS_G2 (272)
# CHECK: Type: R_AARCH64_LD_PREL_LO19 (273)
# CHECK: Type: R_AARCH64_ADR_PREL_LO21 (274)
# CHECK: Type: R_AARCH64_ADR_PREL_PG_HI21 (275)
# CHECK: Type: R_AARCH64_ADR_PREL_PG_HI21_NC (276)
# CHECK: Type: R_AARCH64_ADD_ABS_LO12_NC (277)
# CHECK: Type: R_AARCH64_LDST8_ABS_LO12_NC (278)
# CHECK: Type: R_AARCH64_TSTBR14 (279)
# CHECK: Type: R_AARCH64_CONDBR19 (280)
# CHECK: Type: R_AARCH64_JUMP26 (282)
# CHECK: Type: R_AARCH64_CALL26 (283)
# CHECK: Type: R_AARCH64_LDST16_ABS_LO12_NC (284)
# CHECK: Type: R_AARCH64_LDST32_ABS_LO12_NC (285)
# CHECK: Type: R_AARCH64_LDST64_ABS_LO12_NC (286)
# CHECK: Type: R_AARCH64_MOVW_PREL_G0 (287)
# CHECK: Type: R_AARCH64_MOVW_PREL_G0_NC (288)
# CHECK: Type: R_AARCH64_MOVW_PREL_G1 (289)
# CHECK: Type: R_AARCH64_MOVW_PREL_G1_NC (290)
# CHECK: Type: R_AARCH64_MOVW_PREL_G2 (291)
# CHECK: Type: R_AARCH64_MOVW_PREL_G2_NC (292)
# CHECK: Type: R_AARCH64_MOVW_PREL_G3 (293)
# CHECK: Type: R_AARCH64_LDST128_ABS_LO12_NC (299)
# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G0 (300)
# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G0_NC (301)
# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G1 (302)
# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G1_NC (303)
# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G2 (304)
# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G2_NC (305)
# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G3 (306)
# CHECK: Type: R_AARCH64_GOTREL64 (307)
# CHECK: Type: R_AARCH64_GOTREL32 (308)
# CHECK: Type: R_AARCH64_GOT_LD_PREL19 (309)
# CHECK: Type: R_AARCH64_LD64_GOTOFF_LO15 (310)
# CHECK: Type: R_AARCH64_ADR_GOT_PAGE (311)
# CHECK: Type: R_AARCH64_LD64_GOT_LO12_NC (312)
# CHECK: Type: R_AARCH64_LD64_GOTPAGE_LO15 (313)
# CHECK: Type: R_AARCH64_PLT32 (314)
# CHECK: Type: R_AARCH64_TLSGD_ADR_PREL21 (512)
# CHECK: Type: R_AARCH64_TLSGD_ADR_PAGE21 (513)
# CHECK: Type: R_AARCH64_TLSGD_ADD_LO12_NC (514)
# CHECK: Type: R_AARCH64_TLSGD_MOVW_G1 (515)
# CHECK: Type: R_AARCH64_TLSGD_MOVW_G0_NC (516)
# CHECK: Type: R_AARCH64_TLSLD_ADR_PREL21 (517)
# CHECK: Type: R_AARCH64_TLSLD_ADR_PAGE21 (518)
# CHECK: Type: R_AARCH64_TLSLD_ADD_LO12_NC (519)
# CHECK: Type: R_AARCH64_TLSLD_MOVW_G1 (520)
# CHECK: Type: R_AARCH64_TLSLD_MOVW_G0_NC (521)
# CHECK: Type: R_AARCH64_TLSLD_LD_PREL19 (522)
# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2 (523)
# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1 (524)
# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC (525)
# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G0 (526)
# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC (527)
# CHECK: Type: R_AARCH64_TLSLD_ADD_DTPREL_HI12 (528)
# CHECK: Type: R_AARCH64_TLSLD_ADD_DTPREL_LO12 (529)
# CHECK: Type: R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC (530)
# CHECK: Type: R_AARCH64_TLSLD_LDST8_DTPREL_LO12 (531)
# CHECK: Type: R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC (532)
# CHECK: Type: R_AARCH64_TLSLD_LDST16_DTPREL_LO12 (533)
# CHECK: Type: R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC (534)
# CHECK: Type: R_AARCH64_TLSLD_LDST32_DTPREL_LO12 (535)
# CHECK: Type: R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC (536)
# CHECK: Type: R_AARCH64_TLSLD_LDST64_DTPREL_LO12 (537)
# CHECK: Type: R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC (538)
# CHECK: Type: R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 (539)
# CHECK: Type: R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC (540)
# CHECK: Type: R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 (541)
# CHECK: Type: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC (542)
# CHECK: Type: R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 (543)
# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G2 (544)
# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G1 (545)
# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G1_NC (546)
# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G0 (547)
# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G0_NC (548)
# CHECK: Type: R_AARCH64_TLSLE_ADD_TPREL_HI12 (549)
# CHECK: Type: R_AARCH64_TLSLE_ADD_TPREL_LO12 (550)
# CHECK: Type: R_AARCH64_TLSLE_ADD_TPREL_LO12_NC (551)
# CHECK: Type: R_AARCH64_TLSLE_LDST8_TPREL_LO12 (552)
# CHECK: Type: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC (553)
# CHECK: Type: R_AARCH64_TLSLE_LDST16_TPREL_LO12 (554)
# CHECK: Type: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC (555)
# CHECK: Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12 (556)
# CHECK: Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC (557)
# CHECK: Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12 (558)
# CHECK: Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC (559)
# CHECK: Type: R_AARCH64_TLSDESC_LD_PREL19 (560)
# CHECK: Type: R_AARCH64_TLSDESC_ADR_PREL21 (561)
# CHECK: Type: R_AARCH64_TLSDESC_ADR_PAGE21 (562)
# CHECK: Type: R_AARCH64_TLSDESC_LD64_LO12 (563)
# CHECK: Type: R_AARCH64_TLSDESC_ADD_LO12 (564)
# CHECK: Type: R_AARCH64_TLSDESC_OFF_G1 (565)
# CHECK: Type: R_AARCH64_TLSDESC_OFF_G0_NC (566)
# CHECK: Type: R_AARCH64_TLSDESC_LDR (567)
# CHECK: Type: R_AARCH64_TLSDESC_ADD (568)
# CHECK: Type: R_AARCH64_TLSDESC_CALL (569)
# CHECK: Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12 (570)
# CHECK: Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC (571)
# CHECK: Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12 (572)
# CHECK: Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC (573)
# CHECK: Type: R_AARCH64_COPY (1024)
# CHECK: Type: R_AARCH64_GLOB_DAT (1025)
# CHECK: Type: R_AARCH64_JUMP_SLOT (1026)
# CHECK: Type: R_AARCH64_RELATIVE (1027)
# CHECK: Type: R_AARCH64_TLS_DTPMOD64 (1028)
# CHECK: Type: R_AARCH64_TLS_DTPREL64 (1029)
# CHECK: Type: R_AARCH64_TLS_TPREL64 (1030)
# CHECK: Type: R_AARCH64_TLSDESC (1031)
# CHECK: Type: R_AARCH64_IRELATIVE (1032)

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_AARCH64
Sections:
  - Name: .rela.text
    Type: SHT_RELA
    Relocations:
      - Type: R_AARCH64_NONE
      - Type: R_AARCH64_ABS64
      - Type: R_AARCH64_ABS32
      - Type: R_AARCH64_ABS16
      - Type: R_AARCH64_PREL64
      - Type: R_AARCH64_PREL32
      - Type: R_AARCH64_PREL16
      - Type: R_AARCH64_MOVW_UABS_G0
      - Type: R_AARCH64_MOVW_UABS_G0_NC
      - Type: R_AARCH64_MOVW_UABS_G1
      - Type: R_AARCH64_MOVW_UABS_G1_NC
      - Type: R_AARCH64_MOVW_UABS_G2
      - Type: R_AARCH64_MOVW_UABS_G2_NC
      - Type: R_AARCH64_MOVW_UABS_G3
      - Type: R_AARCH64_MOVW_SABS_G0
      - Type: R_AARCH64_MOVW_SABS_G1
      - Type: R_AARCH64_MOVW_SABS_G2
      - Type: R_AARCH64_LD_PREL_LO19
      - Type: R_AARCH64_ADR_PREL_LO21
      - Type: R_AARCH64_ADR_PREL_PG_HI21
      - Type: R_AARCH64_ADR_PREL_PG_HI21_NC
      - Type: R_AARCH64_ADD_ABS_LO12_NC
      - Type: R_AARCH64_LDST8_ABS_LO12_NC
      - Type: R_AARCH64_TSTBR14
      - Type: R_AARCH64_CONDBR19
      - Type: R_AARCH64_JUMP26
      - Type: R_AARCH64_CALL26
      - Type: R_AARCH64_LDST16_ABS_LO12_NC
      - Type: R_AARCH64_LDST32_ABS_LO12_NC
      - Type: R_AARCH64_LDST64_ABS_LO12_NC
      - Type: R_AARCH64_MOVW_PREL_G0
      - Type: R_AARCH64_MOVW_PREL_G0_NC
      - Type: R_AARCH64_MOVW_PREL_G1
      - Type: R_AARCH64_MOVW_PREL_G1_NC
      - Type: R_AARCH64_MOVW_PREL_G2
      - Type: R_AARCH64_MOVW_PREL_G2_NC
      - Type: R_AARCH64_MOVW_PREL_G3
      - Type: R_AARCH64_LDST128_ABS_LO12_NC
      - Type: R_AARCH64_MOVW_GOTOFF_G0
      - Type: R_AARCH64_MOVW_GOTOFF_G0_NC
      - Type: R_AARCH64_MOVW_GOTOFF_G1
      - Type: R_AARCH64_MOVW_GOTOFF_G1_NC
      - Type: R_AARCH64_MOVW_GOTOFF_G2
      - Type: R_AARCH64_MOVW_GOTOFF_G2_NC
      - Type: R_AARCH64_MOVW_GOTOFF_G3
      - Type: R_AARCH64_GOTREL64
      - Type: R_AARCH64_GOTREL32
      - Type: R_AARCH64_GOT_LD_PREL19
      - Type: R_AARCH64_LD64_GOTOFF_LO15
      - Type: R_AARCH64_ADR_GOT_PAGE
      - Type: R_AARCH64_LD64_GOT_LO12_NC
      - Type: R_AARCH64_LD64_GOTPAGE_LO15
      - Type: R_AARCH64_PLT32
      - Type: R_AARCH64_TLSGD_ADR_PREL21
      - Type: R_AARCH64_TLSGD_ADR_PAGE21
      - Type: R_AARCH64_TLSGD_ADD_LO12_NC
      - Type: R_AARCH64_TLSGD_MOVW_G1
      - Type: R_AARCH64_TLSGD_MOVW_G0_NC
      - Type: R_AARCH64_TLSLD_ADR_PREL21
      - Type: R_AARCH64_TLSLD_ADR_PAGE21
      - Type: R_AARCH64_TLSLD_ADD_LO12_NC
      - Type: R_AARCH64_TLSLD_MOVW_G1
      - Type: R_AARCH64_TLSLD_MOVW_G0_NC
      - Type: R_AARCH64_TLSLD_LD_PREL19
      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2
      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1
      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G0
      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
      - Type: R_AARCH64_TLSLD_ADD_DTPREL_HI12
      - Type: R_AARCH64_TLSLD_ADD_DTPREL_LO12
      - Type: R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
      - Type: R_AARCH64_TLSLD_LDST8_DTPREL_LO12
      - Type: R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
      - Type: R_AARCH64_TLSLD_LDST16_DTPREL_LO12
      - Type: R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
      - Type: R_AARCH64_TLSLD_LDST32_DTPREL_LO12
      - Type: R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
      - Type: R_AARCH64_TLSLD_LDST64_DTPREL_LO12
      - Type: R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
      - Type: R_AARCH64_TLSIE_MOVW_GOTTPREL_G1
      - Type: R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
      - Type: R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
      - Type: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
      - Type: R_AARCH64_TLSIE_LD_GOTTPREL_PREL19
      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G2
      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G1
      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G1_NC
      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G0
      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G0_NC
      - Type: R_AARCH64_TLSLE_ADD_TPREL_HI12
      - Type: R_AARCH64_TLSLE_ADD_TPREL_LO12
      - Type: R_AARCH64_TLSLE_ADD_TPREL_LO12_NC
      - Type: R_AARCH64_TLSLE_LDST8_TPREL_LO12
      - Type: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
      - Type: R_AARCH64_TLSLE_LDST16_TPREL_LO12
      - Type: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
      - Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12
      - Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
      - Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12
      - Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
      - Type: R_AARCH64_TLSDESC_LD_PREL19
      - Type: R_AARCH64_TLSDESC_ADR_PREL21
      - Type: R_AARCH64_TLSDESC_ADR_PAGE21
      - Type: R_AARCH64_TLSDESC_LD64_LO12
      - Type: R_AARCH64_TLSDESC_ADD_LO12
      - Type: R_AARCH64_TLSDESC_OFF_G1
      - Type: R_AARCH64_TLSDESC_OFF_G0_NC
      - Type: R_AARCH64_TLSDESC_LDR
      - Type: R_AARCH64_TLSDESC_ADD
      - Type: R_AARCH64_TLSDESC_CALL
      - Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12
      - Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC
      - Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12
      - Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC
      - Type: R_AARCH64_COPY
      - Type: R_AARCH64_GLOB_DAT
      - Type: R_AARCH64_JUMP_SLOT
      - Type: R_AARCH64_RELATIVE
      - Type: R_AARCH64_TLS_DTPMOD64
      - Type: R_AARCH64_TLS_DTPREL64
      - Type: R_AARCH64_TLS_TPREL64
      - Type: R_AARCH64_TLSDESC
      - Type: R_AARCH64_IRELATIVE
